﻿srf_init:
	;读取配置
	global srf_default_value, Gbuffer, Yzimeini:=class_EasyIni("Data\Yzime.ini"), DllFolder:=A_ScriptDir "\Lib\Dll_" (A_PtrSize=4?"x86":"x64")
		, AhkPath:=A_IsCompiled?A_ScriptDir "\Yzime.exe":A_AhkPath, YzimePID:=DllCall("GetCurrentProcessId")

	srf_default_value:={Settings:{Startingup:0, Autoupdatefg:1, UIAccess:0, CloudInput:0, DebugLevel:1, fuzhuma:0, SendDelay:0, ClipHistory:0, Imagine:0, MemoryDB:0, Settingsbak:"", MouseCross:0, dwxg:0
		, Magicstring:0, Superrun:0, Wordfrequency:0, fixedword:0, Learning:0, Inputscheme:"pinyin", chaojijp:0, Traditional:0, Showquanpin:0, Source:"Gitee", mhy:"0000000000", fyfz:0, bmhg:0
		, lspy:0, simasp:1, wumaqc:1, wumasp:1, Different:0, IMEmode:1, ClipWindows:"", IMECnWindows:"", IMEEnWindows:"", EnSymbol:0, SaveCloud:0, ShowCode:0, Singleword:0, zigen:0
		, decfre:0, Tofirst:0, Useless:0}
		, Func:{CustomFuncName:"{""fanyi"":""fy"",""label"":""l"",""magic"":""s"",""mode"":""m"",""run"":""r"",""scheme"":""sc"",""soso"":""ss""}"}
		, GuiStyle:{TextFont:InStr(ListFonts(),"Microsoft YaHei UI")?"Microsoft YaHei UI":"黑体",SymbolFont:"Segoe UI Symbol", FontBold:0, FontSize:20, BorderColor:"8080FF", CodeColor:"8080FF", TextColor:"000000"
		, BackgroundColor:"FFFFFF", ListNum:5, Textdirection:"Horizontal", FocusBackColor:"0080C0", FocusColor:"FFFFFF"
		, LogoSize:100, ToolTipStyle:(A_OSVersion="WIN_XP"?1:2), Lockedposition:0}
		, Hotkey:{Double:0, Switch:"LShift", Enterfg:2, Escfg:1, Shiftfg:2, fanyefg:"[] -=", 23hx:"", ycdzfg:""}
		, DBFile:{main:"Data\ciku.db", extend:"Data\ciku_extend.db"}
		, Version:{Version:"1.3.9"}}
	LoadIni()
	EnableUIAccess()
	DownloadRes()
	Sourceurl:=Source="Gitee"?"https://gitee.com/orz707/Yzime/raw/zip":"https://autohotkey.oss-cn-qingdao.aliyuncs.com/AutoAHKScript/Scripts/yz"
	Eventhook:=DllCall("SetWinEventHook", "UInt", 0x03, "UInt", 0x17, "Ptr", 0, "Ptr", RegisterCallback("_EventProc"), "UInt", 0, "UInt", 0, "UInt", 0)
	GUIFont:=InStr(ListFonts(),"Microsoft YaHei UI")?"Microsoft YaHei UI":"黑体", TickCount(0, 1), TickCount(0, 2)
	valueindex:=Traditional?5:2, SendDelaymode:=(SendDelay?"{Text}{Delay," SendDelay*10 ",0}":""), localpos:=1, srf_mode:=(IMEmode-1)
	waitnum:=Learnfg:=0, ClipSaved:="", MethodTable:={sanma:"sanma",lianda:"lianda"}, AppIMEtable:=[], history_field_array:=[]
	pinyinec:={pinyin:"全拼",dnsp:"大牛双拼",xhsp:"小鹤双拼",zrmsp:"自然码双拼",abcsp:"ABC双拼",sgsp:"搜狗双拼",wrsp:"微软双拼",jjsp:"加加双拼", xysp: "小月双拼"}, pinyince:=[], customspjm:=[]
	Function_for_select:=[], save_field_array:=[], SQL_buffer:=[], srf_Plugins:=[], srf_last_input:=[], srf_Custom_Func:=[], srf_for_select_obj:=[], srf_all_input_:=[]
	Gosub TRAYMENU
	Gosub LoadLogo
	_EventProc(0, 3, 0)
	Gosub LoadDB
	ChangeDB()
	Gosub module_functions
	Gosub houxuankuangguicreate
	Gosub Registrationhotkey
	#Include *i Data\usercustoms.ahk
	Try srf_Custom_Func:=JSON.Load(CustomFuncName)
	shurulei:=MethodTable[Inputscheme]?MethodTable[Inputscheme]:Inputscheme~="sp$|pinyin"?"pinyin":"xingma", pinyinlist:=""
	setmohuyingobj()
	Gosub Registrationfuncandlabel
	For Key,Value In customspjm
		pinyinec[Key]:=customspjm[Key,"1"], pinyince[customspjm[Key,"1"]]:=Key
	For Key,Value In pinyinec
		pinyince[Value]:=Key, pinyinlist .= "|" Value
	If (fuzhuma)	; 载入辅助码
		Gosub Loadfuzhuma
	If Autoupdatefg
		SetTimer, srfAutoupdatefg, -10
	If A_Args[1]
		Gosub help
Return

DownloadRes(){
	global
	local tvar, CopyTime, Size
	FileGetVersion, tvar, %DllFolder%\cikutools.dll
	If (!tvar||tvar<"1.3.9")
		ZIPDownloadToFile("https://gitee.com/orz707/Yzime/raw/zip/Dll_x" (A_PtrSize=4?"86":"64") ".zip",A_ScriptDir "\Lib\Dll_x" (A_PtrSize=4?"86":"64") "\Dll.zip")
	If !FileExist(DllFolder "\SQLite3.dll"){
		Progress, B2 ZH-1 ZW-1 FS12, %DllFolder%\SQLite3.dll不存在！`n正在下载，请稍后...
		If !ZIPDownloadToFile(Sourceurl "/Dll_x" (A_PtrSize=4?"86":"64") ".zip",A_ScriptDir "\Lib\Dll_x" (A_PtrSize=4?"86":"64") "\Dll.zip"){
			Progress, Off
			MsgBox, 16, 错误, SQLite3.dll下载失败！`n请手动下载后放在%DllFolder%。
			ExitApp
		}
		Progress, Off
	}
	If (!FileExist("Data\Yzime.icl"))
		ZIPDownloadToFile(Sourceurl "/Yzimeicl.zip", "Data\Yzimeicl.zip")
	If !(FileExist(A_ScriptDir "\Lib\tools\IMEConverter.ahk")&&FileExist(A_ScriptDir "\Lib\tools\CloudInput.ahk"))
		ZIPDownloadToFile(Sourceurl "/tools.zip", A_ScriptDir "\Lib\tools.zip")
	FileCreateDir %A_Temp%\Yzime
	If (!FileExist(main)){
		If (!FileExist("ciku_demo.db")){
			Run, https://www.autoahk.com/archives/15117
			Progress, B2 ZH-1 ZW-1 FS12, 正在下载词库ciku.db
			URLDownloadToFile("https://autohotkey.oss-cn-qingdao.aliyuncs.com/AutoAHKScript/Scripts/yz/ciku_demo.db", "ciku_demo.db")
			Progress, Off
		}
		If (FileExist("ciku_demo.db")){
			FileGetSize, Size, ciku_demo.db, M
			CopyTime:=A_TickCount
			FileCopy, ciku_demo.db, %main%
			If (ErrorLevel){
				Try	{
					If A_IsCompiled
						Run *RunAs "%A_ScriptFullPath%" /restart
					Else
						Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
				}
				ExitApp
			}
			If (Size*1000/(A_TickCount-CopyTime)<400){
				MsgBox, 64, 提示, 如遇到输入卡顿的现象，可尝试开启内存数据库选项。
			}
		}
		SetTimer DBinit, -1000
	}
	Return
	DBinit:
		Progress, B2 ZH-1 ZW-1 FS12, 词库初始化。。。
		DB.GetTable("SELECT name FROM sqlite_master WHERE type='table' AND name NOT IN ('sqlite_sequence','hebing','Cliphistory')",Result)
		Loop % Result.RowCount
			DB.Exec("CREATE INDEX IF NOT EXISTS ""sy_" Result.Rows[A_Index,1] """ ON """ Result.Rows[A_Index,1] """ (""" (Result.Rows[A_Index,1]="pinyin"?"jp":"key") """);")
		Progress, Off
		Gosub cikuManager
		Gosub Option
		Gosub Help
	Return
}
_EventProc(phook, Msg, Hwnd){
	global YzimePID, AppIMEtable, Different, srf_mode, IMEmode, srf_inputing, SendDelay
		, SendDelaymode, IMEEnWindows, IMECnWindows, ClipWindows
	static htype:=0, lastexe:=" "
	If (A_IsSuspended)
		Return
	If (Msg=3||Msg=5||Msg=23){			; EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_MENUEND
		If (lastexe&&Msg=5)
			Return
		If (Different){
			If (lastexe)
				If (Msg=3){
					cleanappimetable(lastexe)
				}
			SetTimer detectwindows, -20
		} Else If (srf_mode!=IMEmode-1)
			Gosub Switchstate
		If (!srf_inputing)
			SetTimer, ToolTipInputStatus, -100
	} Else If (Msg=4){	; EVENT_SYSTEM_MENUSTART
		If srf_mode&&WinExist("ahk_class #32768"){
			; lastexe:=""
			srf_mode:=0
			If (srf_inputing)
				Gosub srf_value_off
		}
	}
	Return
	detectwindows:
		WinGet, activeexe, ProcessName, A
		WinGetClass, activeclass, A
		SendDelaymode:=(SendDelay?"{Text}{Delay," SendDelay*10 ",0}":"")
		Switch (checkactivewindow(htype,activeexe,activeclass)^srf_mode){
			Case 1:
				If (!srf_inputing)
					Gosub Switchstate
			Case -2,-1:
				If (AppIMEtable[activeexe]=""){
					AppIMEtable[activeexe]:=IMEmode-1
					If (!srf_inputing&&srf_mode!=IMEmode-1)
						Gosub Switchstate
				} Else If (!srf_inputing&&AppIMEtable[activeexe]!=srf_mode)
					Gosub Switchstate
			Case -4,-3:
				SendDelaymode:="{Fast}"
		}
			If (htype=-1&&srf_inputing)
				Gosub Switchstate
		lastexe:=activeexe
	Return
}

checkactivewindow(ByRef type,arr*){
	global IMECnWindows,IMEEnWindows,ClipWindows
	If (IMEEnWindows)
		For Key,Value In arr
			If Value In %IMEEnWindows%
				Return 0, type:=Key
	If (arr[2]~="^(#\d+|Net UI Tool Window|Edit)")
		Return 0, type:=-1
	If (ClipWindows)
		For Key,Value In arr
			If Value In %ClipWindows%
				Return -3, type:=Key
	If (IMECnWindows)
		For Key,Value In arr
			If Value In %IMECnWindows%
				Return 1, type:=Key
	Return -1, type:=0
}
cleanappimetable(exe){
	global AppIMEtable
	static history
	If history&&!WinExist("ahk_exe" history)
		AppIMEtable.Delete(history)
	history:=exe
}
ChangeDB(){
	global DB
	DB.GetTable("SELECT 1 FROM sqlite_master WHERE type='table' AND tbl_name='pinyin' AND NOT instr(sql,'jp')", Result)
	If (Result.Rows[1,1]){
		MsgBox, 308, 词库调整, 本次更新将调整pinyin词库结构，优化文件占用空间，如有重要信息，请注意备份词库！`n是否继续？
		IfMsgBox, No
			ExitApp
		Progress, B2 ZH-1 ZW-1 FS12, 调整词库中，请稍后...
		DB.Exec("BEGIN TRANSACTION;")
		DB.Exec("DROP TABLE IF EXISTS 'main'.'hebing';")
		DB.Exec("CREATE TABLE 'main'.'hebing' (""jp"" TEXT,""Key"" TEXT,""Value"" TEXT,""weight"" INTEGER DEFAULT 0);")
		DB.Exec("INSERT INTO 'main'.'hebing' SELECT szm(Key),Key,Value,max(weight) FROM 'main'.'pinyin' GROUP by Key,Value ORDER by ROWID;")
		DB.Exec("DROP TABLE 'main'.'pinyin';ALTER TABLE 'main'.'hebing' RENAME TO 'pinyin';")
		DB.Exec("CREATE INDEX 'main'.'sy_pinyin' ON 'pinyin' ('jp');")
		DB.Exec("DROP TABLE IF EXISTS 'main'.'jianpin';")
		DB.Exec("COMMIT TRANSACTION;")
		DB.Exec("VACUUM")
		Progress, Off
		MsgBox 调整完成
	}
	DB.GetTable("SELECT tbl_name,count(*) as n FROM sqlite_master WHERE name!='sqlite_sequence' GROUP by tbl_name HAVING n=1",Result)
	If (Result.RowCount){
		Loop % Result.RowCount
			DB.Exec("CREATE INDEX ""sy_" Result.Rows[A_Index,1] """ ON """ Result.Rows[A_Index,1] """ (""" (Result.Rows[A_Index,1]="pinyin"?"jp":"key") """)")
	}
}

Loadfuzhuma:
ReLoadfuzhuma:
	srf_fzm_fancha_table:=[]
	If !FileExist("Data\@fzm.txt"){
		fuzhuma:=0
		GuiControl, 3:, fuzhuma, 0
		If (A_ThisLabel="ReLoadfuzhuma")
			MsgBox, 48, 提示, 辅助码文件不存在，请在Data目录下放置辅助码文件@fzm.txt，格式如下：`n吖=k`n阿=e`n啊=k`n文本编码为UTF-8-Bom或ANSI
	} Else {
		tvar:=FileRead(A_ScriptDir "\Data\@fzm.txt")
		Loop, Parse, tvar, `n, `r
		{
			If (A_LoopField="")
				Continue
			srf_fzm_fancha_table[(tarr:=StrSplit(A_LoopField, "="))[1]]:=tarr[2]
		}
		Key:=tvar:=""
	}
Return
FuncHotkey:
	srf_all_input:=srf_func_hk[A_ThisHotkey] func_key, srf_inputing:=1
	Gosub srf_tooltip
Return
Registrationfuncandlabel:	; 注册内置函数
	srf_func_table:=[], srf_func_hk:=[]
	; Hotkey If, srf_mode
	For Key,Value In srf_Default_Func
		If RegExMatch(srf_Custom_Func[Value[1]],"^&\K.+$",Match){
			srf_func_table[Value[1]]:=Func(Key)
			Try {
				Hotkey, %Match%, FuncHotkey, On
				srf_func_hk[Match]:=Value[1]
			}
		} Else
			srf_func_table[srf_Custom_Func[Value[1]]?srf_Custom_Func[Value[1]]:Value[1]]:=Func(Key)
	; Hotkey If
	; For Key,Value In srf_func_hk
	; 	Hotkey, %Key%, FuncHotkey, On
Return

;备份
Backup(){
	If (FileExist(A_ScriptDir "\backups")="D")
		FileRemoveDir, %A_ScriptDir%\backups, 1
	FileCreateDir, %A_ScriptDir%\backups
	FileCopyDir, %A_ScriptDir%\Lib, %A_ScriptDir%\backups\Lib, 1
	FileCopyDir, %A_ScriptDir%\Plugins, %A_ScriptDir%\backups\Plugins, 1
	FileCopyDir, %A_ScriptDir%\Data, %A_ScriptDir%\backups\Data, 1
}
;更新
srfAutoupdatefg:
srfUpdate:
	;获取更新信息
	If (!DllCall("Wininet.dll\InternetCheckConnection", "Str", Sourceurl, "UInt", 0x1, "UInt", 0x0, "Int")){
		If (A_ThisLabel="srfUpdate")
			MsgBox, 16, 检查更新, 网络异常,将无法更新脚本！, 5
	} Else {
		If !RegExMatch(var:=SendRequest(Sourceurl "/Yzime.ini"), "i)Version=\K[\d\.]+", UpdateVersion){
			If (A_ThisLabel="srfUpdate")
				MsgBox, 16, 检查更新, 获取版本信息失败！, 5
		} Else If (Version>=UpdateVersion){
			If (A_ThisLabel="srfUpdate")
				MsgBox, 64, 检查更新, 影子输入法已经是最新版本了。, 5
		} Else If (Version<UpdateVersion){
			MsgBox, 36, 检查更新, % "检测到影子输入法有新版本`n`n" Version "`t版本更新后=>`t" UpdateVersion "`n`n更新说明：`n" RegExReplace(SendRequest("https://gitee.com/orz707/Yzime/raw/master/change.txt"), "im).*v" RegExReplace(UpdateVersion,"^(\d+\.\d+.\d+)(\.\d)?","$1") "([^" Chr(2) "]+).*", "$1") "`n是否更新到最新版本？"
			IfMsgBox Yes
			{
				Backup()
				If !ZIPDownloadToFile(Sourceurl "/Yzime.zip", A_ScriptDir "\Yzime.zip"){
					MsgBox, 48, 检查更新, 下载影子输入法失败, 2
					Return
				}
				RegExMatch(var,"i)UpdateFile=\K.+", UpdateFile), var:=""
				Loop, Parse, UpdateFile, `,
					ZIPDownloadToFile(Sourceurl "/" RegExReplace(A_LoopField, "i)^.*\\([^\\]\.zip)$", "$1"), A_ScriptDir "\" A_LoopField)
				Version:=Yzimeini.Version["Version"]:=UpdateVersion, Yzimeini.Save()
				If A_IsCompiled
					Run "%A_ScriptFullPath%" /restart update
				Else
					Run "%AhkPath%" /restart "%A_ScriptFullPath%" update
				ExitApp
			}
		}
	}
Return
ZIPDownloadToFile(URL,File){
	If URLDownloadToFile(URL,File){
		If (File~="i)Yzime\.zip"){
			SmartZip(File,A_Temp "\Yzime\Source")
			FileCopy %A_Temp%\Yzime\Source\*.ahk, %A_ScriptDir%, 1
			FileCopy %A_Temp%\Yzime\Source\Lib\*.ahk, %A_ScriptDir%\Lib, 1
			FileCopy %A_Temp%\Yzime\Source\tools\*.ahk, %A_ScriptDir%\Lib\tools, 1
			FileDelete %A_Temp%\Yzime\Source
		} Else
			SmartZip(File,RegExReplace(File,"i)\\[^\\]+\.zip"))
		FileDelete %File%
		Return 1
	}
	Return 0
}
; 界面
;------------------------------------------------------------------------------------------------------------------------
; 选词框gui、ToolTip
houxuankuangguicreate:
	Height:=60
	If (Caret="")
		Caret:={X:A_ScreenWidth//2-A_ScreenWidth//8, Y:A_ScreenHeight-20-Height*(InStr(ToolTipText,"`n")?2.5:4)}
	If (ToolTipStyle=1)
		DrawHXGUI("", "Shutdown"), @TSF:=ToolTip(1, "", "Q1 B" BackgroundColor " T" TextColor " S" FontSize, TextFont, FontBold)
	Else
		DrawHXGUI("", "init"), ToolTip()
Return

;托盘按钮
TRAYMENU:
	Menu, Tray, NoStandard                                         ;去掉标准托盘按钮
	Menu, Tray, DeleteAll                                              ;清空托盘按钮
	Menu, Tray, Add, 词库管理, cikuManager
	Menu, Tray, Icon, 词库管理, Data\Yzime.icl, 3
	Menu, Tray, Add
	Menu, Tray, Add, 选项, Option
	Menu, Tray, Icon, 选项, Data\Yzime.icl, 4
	Menu, Tray, Add, 更新, srfUpdate
	Menu, Tray, Icon, 更新, Data\Yzime.icl, 5
	Menu, Tray, Add, 帮助, Help
	Menu, Tray, Icon, 帮助, Data\Yzime.icl, 6
	
	Menu, Tray, Add
	Menu, Tray, Add, 禁用, srfsuspend
	Menu, Tray, Icon, 禁用, Data\Yzime.icl, 14
	Menu, Tray, Add, 重启, srfreload
	Menu, Tray, Icon, 重启, Data\Yzime.icl, 8
	Menu, Tray, Add, 退出, EXIT
	Menu, Tray, Icon, 退出, Data\Yzime.icl, 9
	Menu, Tray, Default, 词库管理
	Menu, Tray, Tip, 影子
	Menu, Tray, Icon, Data\Yzime.icl, 2, 1
	Menu, Tray, Click, 2
	Menu, MyContextMenu, Add, 新建(&N), NewRow
	Menu, MyContextMenu, Add, 复制(&C), CopyRow
	Menu, MyContextMenu, Add, 删除(&D), DelRow
	Menu, MyContextMenu, Add, 刷新(&R), Refresh2
	Menu, MyContextMenu, Add, 撤销(&U), Revoke
	Menu, appContextMenu, Add, 剪贴板`tAlt+D, 剪贴板
	Menu, appContextMenu, Add, 中文`tAlt+C, 中文
	Menu, appContextMenu, Add, 英文`tAlt+E, 英文
	Menu, appContextMenu, Add, 删除`tDel, 删除
Return

;加载logo
LoadLogo:
	SetYzLogo(srf_mode)
Return

; 加载数据库
LoadDB:
	If (DB._Handle)
		DB.CloseDB()
	DB:="", DB:=new SQLiteDB
	If (MemoryDB){
		Suspend, On
		Progress, B2 ZH-1 ZW-1 FS12, 载入内存数据库中，请稍后...
		If !(DB.OpenDB("")&&DB.LoadOrSaveDb(main)){
			MsgBox, 16, 数据库错误, % "消息:`t" DB.ErrorMsg "`n代码:`t" DB.ErrorCode
			ExitApp
		}
		Suspend, Off
		Progress, Off
	} Else If !DB.OpenDB(main){
		MsgBox, 16, 数据库错误, % "消息:`t" DB.ErrorMsg "`n代码:`t" DB.ErrorCode
		ExitApp
	}
	DB.CreateScalarFunc("REGEXP", 2, RegisterCallback("SQLiteDB_RegExp", "C"))
	DB.CreateScalarFunc("szm", 1, RegisterCallback("shouzimu", "C"))
	DB.CreateScalarFunc("t2s", 1, RegisterCallback("trad2simp", "C"))
	; DB.CreateScalarFunc("erjiayi", 2, RegisterCallback("erjiayi", "C"))
	DB.Exec("DROP TABLE IF EXISTS 'main'.''")
	DB.AttachDB(extend, "extend")
	If (extend!=main)&&DB.GetTable("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name IN ('English','functions','hotstrings','customs','symbol')",TableInfo){
		Loop % TableInfo.RowCount {
			If (TableInfo.Rows[A_Index,1]="English"), TableName:=TableInfo.Rows[A_Index,1]
				_SQL = CREATE TABLE 'extend'.'English' ("key" TEXT COLLATE NOCASE,"weight" INTEGER DEFAULT 0);
			Else If (TableName ~= "functions|hotstrings|symbol|customs")
				_SQL = CREATE TABLE 'extend'.'%TableName%' ("key" TEXT,"value" TEXT,"comment" TEXT);
			If DB.Exec(_SQL)
				DB.Exec("INSERT INTO 'extend'.'" TableName "' SELECT * FROM 'main'.'" TableName "'"), DB.Exec("DROP TABLE 'main'.'" TableInfo.Rows[A_Index, 1] "'")
		}
	}
Return

96GuiEscape:
	99GuiEscape:
	Gui Hide
Return

Help:
	Gui, 96:Destroy
	If DllCall("Wininet.dll\InternetCheckConnection", "Str", "https://gitee.com/orz707/Yzime/wikis/pages", "UInt", 0x1, "UInt", 0x0, "Int"){
		If (A_Args[1]="update"), A_Args:=[] {
			Run % "https://gitee.com/orz707/Yzime/wikis/pages?sort_id=1811043&doc_id=434278"
			TrayTip, 影子输入法, 更新完成, 3
		} Else
			Run % "https://gitee.com/orz707/Yzime/wikis/pages"
		Return
	}
	Gui, 96:Margin, 20, 20
	Gui, 96:Add, Picture, xm w13 h-1 Icon1, Data\Yzime.icl
	Gui, 96:Font, s11 Bold, %GUIFont%
	Gui, 96:Add, Text, x+10 yp, 简易帮助
	Gui, 96:Font
	Gui, 96:Font, s11, %GUIFont%
	Gui, 96:Add, Text, y+5, LShift切换输入模式
	Gui, 96:Add, Text, y+5, Space首选上屏, Enter英文字符上屏
	Gui, 96:Add, Text, y+5, /键 内置功能键
	Gui, 96:Add, Text, y+5, 1、2、3、……、，、。候选上屏
	Gui, 96:Add, Text, y+5, Ctrl + 1、2、3、……调节对应项到首选，`n长按调至指定位置
	Gui, 96:Add, Text, y+5, Ctrl + Alt + 1、2、3、……删除对应词条
	Gui, 96:Add, Text, y+5, Left、Right、Ctrl + 字母 调整插入位置
	Gui, 96:Add, Text, y+5, Ctrl + = 快捷造词
	Gui, 96:Add, Text, y+5, Ctrl + Shift + Alt + F1 帮助
	Gui, 96:Add, Text, y+5, 在选项、词库管理的控件处停留0.5秒`n显示详细说明
	Gui, 96:Add, Text, y+5, 选项 - 控制 - 命令管理 - 模式切换`n有更多便捷的设置
	Gui, 96:Add, Picture, xm y+20 w13 h-1 Icon11, Data\Yzime.icl
	Gui, 96:Font, s11 Bold, %GUIFont%
	Gui, 96:Add, Text, x+10 yp, 详细帮助
	Gui, 96:Font
	Gui, 96:Font, s11, %GUIFont%
	Gui, 96:Add, Link, y+5, <a href="https://gitee.com/orz707/Yzime/wikis">影子帮助文档</a>
	Gui, 96:Show, , 影子输入法 帮助
Return

SetYzLogo(fg, state:=1){
	static Hwnd:=0, Size:=0
	global pToken, LogoSize, Yzimeini, Different, AppIMEtable
	WinGetPos,,,, TrayWnd_Height, ahk_class Shell_TrayWnd
	If (A_OSVersion="WIN_XP"){
		Gui, 2:Destroy
		Gui, 2:-Caption +E0x8000088 -DPIScale +HwndHwnd
		If FileExist("Data\Yzime.png")
			Gui, 2:Add, Picture, , Data\Yzime.png
		Else
			Gui, 2:Add, Picture, Icon1, Data\Yzime.icl
		Gui, 2:Show, % "NA x" (Yzimeini["Hidden","X"]?Yzimeini["Hidden","X"]:A_ScreenWidth-A_ScreenWidth//5-(64*LogoSize//200)) " y" (Yzimeini["Hidden","Y"]?Yzimeini["Hidden","Y"]:A_ScreenHeight-TrayWnd_Height-(64*LogoSize//100))
		WinSet, TransColor, F0F0F0 255, ahk_id%Hwnd%
	} Else {
		If (!Hwnd)
			Gui, 2:-Caption +E0x8080088 +ToolWindow +LastFound -DPIScale +HwndHwnd
		If (!pToken)&&(!pToken:=Gdip_Startup()){
			MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
			ExitApp
		}
		If (Size!=LogoSize){
			Gui, 2:Show, NA
			If FileExist("Data\Yzime.png")
				pBitmap:=Gdip_CreateBitmapFromFile("Data\Yzime.png")
			Else {
				pBitmap:="iVBORw0"
				. "KGgoAAAANSUhEUgAAAHgAAACJCAYAAADnqvxuAAAKN2lDQ1BzUkdCIElFQzYxOTY2LTIuMQAAeJydlndUU9kWh8+9N71QkhCKlNB"
				. "raFICSA29SJEuKjEJEErAkAAiNkRUcERRkaYIMijggKNDkbEiioUBUbHrBBlE1HFwFBuWSWStGd+8ee/Nm98f935rn73P3Wfvfda"
				. "6AJD8gwXCTFgJgAyhWBTh58WIjYtnYAcBDPAAA2wA4HCzs0IW+EYCmQJ82IxsmRP4F726DiD5+yrTP4zBAP+flLlZIjEAUJiM5/L"
				. "42VwZF8k4PVecJbdPyZi2NE3OMErOIlmCMlaTc/IsW3z2mWUPOfMyhDwZy3PO4mXw5Nwn4405Er6MkWAZF+cI+LkyviZjg3RJhkD"
				. "Gb+SxGXxONgAoktwu5nNTZGwtY5IoMoIt43kA4EjJX/DSL1jMzxPLD8XOzFouEiSniBkmXFOGjZMTi+HPz03ni8XMMA43jSPiMdi"
				. "ZGVkc4XIAZs/8WRR5bRmyIjvYODk4MG0tbb4o1H9d/JuS93aWXoR/7hlEH/jD9ld+mQ0AsKZltdn6h21pFQBd6wFQu/2HzWAvAIq"
				. "yvnUOfXEeunxeUsTiLGcrq9zcXEsBn2spL+jv+p8Of0NffM9Svt3v5WF485M4knQxQ143bmZ6pkTEyM7icPkM5p+H+B8H/nUeFhH"
				. "8JL6IL5RFRMumTCBMlrVbyBOIBZlChkD4n5r4D8P+pNm5lona+BHQllgCpSEaQH4eACgqESAJe2Qr0O99C8ZHA/nNi9GZmJ37z4L"
				. "+fVe4TP7IFiR/jmNHRDK4ElHO7Jr8WgI0IABFQAPqQBvoAxPABLbAEbgAD+ADAkEoiARxYDHgghSQAUQgFxSAtaAYlIKtYCeoBnW"
				. "gETSDNnAYdIFj4DQ4By6By2AE3AFSMA6egCnwCsxAEISFyBAVUod0IEPIHLKFWJAb5AMFQxFQHJQIJUNCSAIVQOugUqgcqobqoWb"
				. "oW+godBq6AA1Dt6BRaBL6FXoHIzAJpsFasBFsBbNgTzgIjoQXwcnwMjgfLoK3wJVwA3wQ7oRPw5fgEVgKP4GnEYAQETqiizARFsJ"
				. "GQpF4JAkRIauQEqQCaUDakB6kH7mKSJGnyFsUBkVFMVBMlAvKHxWF4qKWoVahNqOqUQdQnag+1FXUKGoK9RFNRmuizdHO6AB0LDo"
				. "ZnYsuRlegm9Ad6LPoEfQ4+hUGg6FjjDGOGH9MHCYVswKzGbMb0445hRnGjGGmsVisOtYc64oNxXKwYmwxtgp7EHsSewU7jn2DI+J"
				. "0cLY4X1w8TogrxFXgWnAncFdwE7gZvBLeEO+MD8Xz8MvxZfhGfA9+CD+OnyEoE4wJroRIQiphLaGS0EY4S7hLeEEkEvWITsRwooC"
				. "4hlhJPEQ8TxwlviVRSGYkNimBJCFtIe0nnSLdIr0gk8lGZA9yPFlM3kJuJp8h3ye/UaAqWCoEKPAUVivUKHQqXFF4pohXNFT0VFy"
				. "smK9YoXhEcUjxqRJeyUiJrcRRWqVUo3RU6YbStDJV2UY5VDlDebNyi/IF5UcULMWI4kPhUYoo+yhnKGNUhKpPZVO51HXURupZ6jg"
				. "NQzOmBdBSaaW0b2iDtCkVioqdSrRKnkqNynEVKR2hG9ED6On0Mvph+nX6O1UtVU9Vvuom1TbVK6qv1eaoeajx1UrU2tVG1N6pM9R"
				. "91NPUt6l3qd/TQGmYaYRr5Grs0Tir8XQObY7LHO6ckjmH59zWhDXNNCM0V2ju0xzQnNbS1vLTytKq0jqj9VSbru2hnaq9Q/uE9qQ"
				. "OVcdNR6CzQ+ekzmOGCsOTkc6oZPQxpnQ1df11Jbr1uoO6M3rGelF6hXrtevf0Cfos/ST9Hfq9+lMGOgYhBgUGrQa3DfGGLMMUw12"
				. "G/YavjYyNYow2GHUZPTJWMw4wzjduNb5rQjZxN1lm0mByzRRjyjJNM91tetkMNrM3SzGrMRsyh80dzAXmu82HLdAWThZCiwaLG0w"
				. "S05OZw2xljlrSLYMtCy27LJ9ZGVjFW22z6rf6aG1vnW7daH3HhmITaFNo02Pzq62ZLde2xvbaXPJc37mr53bPfW5nbse322N3055"
				. "qH2K/wb7X/oODo4PIoc1h0tHAMdGx1vEGi8YKY21mnXdCO3k5rXY65vTW2cFZ7HzY+RcXpkuaS4vLo3nG8/jzGueNueq5clzrXaV"
				. "uDLdEt71uUnddd457g/sDD30PnkeTx4SnqWeq50HPZ17WXiKvDq/XbGf2SvYpb8Tbz7vEe9CH4hPlU+1z31fPN9m31XfKz95vhd8"
				. "pf7R/kP82/xsBWgHcgOaAqUDHwJWBfUGkoAVB1UEPgs2CRcE9IXBIYMj2kLvzDecL53eFgtCA0O2h98KMw5aFfR+OCQ8Lrwl/GGE"
				. "TURDRv4C6YMmClgWvIr0iyyLvRJlESaJ6oxWjE6Kbo1/HeMeUx0hjrWJXxl6K04gTxHXHY+Oj45vipxf6LNy5cDzBPqE44foi40V"
				. "5iy4s1licvvj4EsUlnCVHEtGJMYktie85oZwGzvTSgKW1S6e4bO4u7hOeB28Hb5Lvyi/nTyS5JpUnPUp2Td6ePJninlKR8lTAFlQ"
				. "Lnqf6p9alvk4LTduf9ik9Jr09A5eRmHFUSBGmCfsytTPzMoezzLOKs6TLnJftXDYlChI1ZUPZi7K7xTTZz9SAxESyXjKa45ZTk/M"
				. "mNzr3SJ5ynjBvYLnZ8k3LJ/J9879egVrBXdFboFuwtmB0pefK+lXQqqWrelfrry5aPb7Gb82BtYS1aWt/KLQuLC98uS5mXU+RVtG"
				. "aorH1futbixWKRcU3NrhsqNuI2ijYOLhp7qaqTR9LeCUXS61LK0rfb+ZuvviVzVeVX33akrRlsMyhbM9WzFbh1uvb3LcdKFcuzy8"
				. "f2x6yvXMHY0fJjpc7l+y8UGFXUbeLsEuyS1oZXNldZVC1tep9dUr1SI1XTXutZu2m2te7ebuv7PHY01anVVda926vYO/Ner/6zga"
				. "jhop9mH05+x42Rjf2f836urlJo6m06cN+4X7pgYgDfc2Ozc0tmi1lrXCrpHXyYMLBy994f9Pdxmyrb6e3lx4ChySHHn+b+O31w0G"
				. "He4+wjrR9Z/hdbQe1o6QT6lzeOdWV0iXtjusePhp4tLfHpafje8vv9x/TPVZzXOV42QnCiaITn07mn5w+lXXq6enk02O9S3rvnIk"
				. "9c60vvG/wbNDZ8+d8z53p9+w/ed71/LELzheOXmRd7LrkcKlzwH6g4wf7HzoGHQY7hxyHui87Xe4Znjd84or7ldNXva+euxZw7dL"
				. "I/JHh61HXb95IuCG9ybv56Fb6ree3c27P3FlzF3235J7SvYr7mvcbfjT9sV3qID0+6j068GDBgztj3LEnP2X/9H686CH5YcWEzkT"
				. "zI9tHxyZ9Jy8/Xvh4/EnWk5mnxT8r/1z7zOTZd794/DIwFTs1/lz0/NOvm1+ov9j/0u5l73TY9P1XGa9mXpe8UX9z4C3rbf+7mHc"
				. "TM7nvse8rP5h+6PkY9PHup4xPn34D94Tz+49wZioAAAAJcEhZcwAAHsIAAB7CAW7QdT4AACAASURBVHic7V0HfBVV1j93Xk97KaQ"
				. "QehNQQ4lUg5SEjmBDV7CtZS3op66N1bWuuLa176q7uHZQF1cXEVCBUKRKJ6KCSC9JSO/tvfn+d+aVmXnzWvISsJz8XmbmljN35j+"
				. "n3XvnjlEURWprOv/8859hjF3lcDhmLFmyZFWbN+BXRMZTcVKAOw2bNIPB8Dq2fU5FG34tdEoABgmube+pU6d2X7Ro0f5T1I5fPJ0"
				. "SgJ1O53FIcS++DxMxFpt/nYp2/BroVKnob7EZ5TrMpt8AbjVqNsBTpkwZBum7A2D9Z/HixZ+GUxcSvFEQhFv5PupnY19AmrO5bfm"
				. "N/FNLJPj/AM7l2F4+adKk3y1duvQ/oVaE95wLTLn7zvBLnjBhwjBs17egLb+RH2oJwPXuHYD1GH7/hRA6Qqn45ZdfHp8y5fzN2B3"
				. "iqj+DfgO4VajZAEOhbmOMrmVMOuwDKZ6O7UehcxDfJhfAEOSZ2dnZ9+fm5lY1tz2/kT41G2BRdCxmTHhZFF0Qk3gfhQFwYWHhO8n"
				. "JyY9CzaegbqLVar0NyU81tz2/kT41G+AvvvjiwOTJk9cBnBGupMyJEyeOQ/qyUOpv3ry5BlL/CAB+jR9j+xBs8UKo7++V5XCO4Uu"
				. "WLNnQ3Hb+2qlFYRK86NcAjBtgbksfxCYkgDkBzH8B5MuwOwa/KKPRuBSAjgagB3l+VlaWLT4+/gt47NPgqa9uSVt/rdQigIuKihZ"
				. "Azf4Vu11cSSMB2ER41F+EUp+HRrC9M2022yYcduZ88MCsB48bAf4SbP+EtDj8+PY3gJtBLQIYarYRIDwBUDwdFdh/sXfv3v337Nl"
				. "TH6ium+BY5Y8bN2WSyUS5OEyFRW8PTbAIfHl9i6vYBEh2b0j2npa099dILe7JgqS9OX78xFkAZoDL3erdvXv3P2P7cKg8li1b/B3"
				. "s92g8HEug6Lu5kt3g4qGR4uVZ+N3R0vb+2qjFAPPYd9y4ydcbjbRRFMkkp7IHANgGOFxL9epAGuf89NNPjyulHGV/GDVq1NCoqKj"
				. "/AehzvaUZySOa7PdQ549A4sta2uZfE0WkL3rZsiXboFLvBQgvupIMCKE+njBh8gyY0s+UZbnjZLfbH4CUJ+HwFmXe6tWrTwLEHIR"
				. "Mb+HwcjnVM14dh3Re/slItPnXQhEbbIBj9RJA7o7d211JUYLA/jdp0uRXyspKH9qwYUMFT4yNjR0NiYTKZTeh/EKtQwYJrYMNnom"
				. "Q6UdIMvfKmSL7bjwAr/0mxaFTREeTYI/vHD9+fAOAuUdOETk4tyPUmQGVPQ/pxyDZ7geAgzwX5c/+6quvypV8oPa52D6MB+AA6vw"
				. "T+y7VT0kWi4VLsEryfyP/FFGAXcDcCzC/BzB/x77NlZWM4zvlXdUUoY4Gg/E5bG/Q4wfpfgu8jkKiPyY5XOJe+k2w4VvgUf87km3"
				. "/pVKrjAfDYXozJ2fSJrOZ3sVhZuDS4nWQ4k8hxYv98FoGkLPgXS+GN93Z5VHPhXR3hsZ41PVQ/UZ+qNUG/FesWLobkjcE4N0Kufs"
				. "LkuyM6RZlBoPh3+PGjeu/bNmyAr0CAPlb2OThjBk+h/0eSLJ6fxhpfQYPHnwt7/Zsrev4uVOrzuhwDR++DPA+Aoh/EUV2PY4N7nw"
				. "F4KlGo3EeHKiJcKCa9HjxIcbhw4ePttsTlqBelovDZe3aJXfHQ3QJNMDh1ryWnyu1yZQdl2TeBFX7CkB+GgBN5umaGbs5cKD+Dam"
				. "/zt+4MvfE+UNgNpuhrtlIOZUNgh3fOn785Cu/+mrJl8ryPCRDnbpfsxpv0zlZXNViMwUSNwFAwrliZynzAfjVyLIDxBsgyUV6PPi"
				. "YMdTypHbt2vH4OsfltLUzGIj3XT8GSZ/jnv6zbt262rFjJ/fOyMg4kJeX19Da13c60imZdAd1+iVAXAG1/AcA/TiSkuQcSWdfYDZ"
				. "bRsG+Pgkp/QceimptfW5zoQ0uQP5XOHT3evGpuI+hXhbyrkK9Qp64fPmSPTjOhnrf4o7Ff010quZFk8vWvgagF0DlPo39a11xM6d"
				. "4gIc0ds+ECZNeqq2tfnXNmjWlyvoc+JEjR54fHR29Cof9FFnjUXcbtMTleJDWusrmAuTL4Qus9OfI/VLplAHsJpcqvh6SNx/AvI3"
				. "9jt5cEfEzzbHZbH8CQG9A876gdKY46GOhg41G0zc4TOdpLsetA5y6lXy4EbE0j7M5yB+CxyyU/3L58uU/tdkFnmJqc4Chkg1jxow"
				. "fAJs5lDFxIJyuPtj2AjTJsMGCsqzbywbwMdjcibq3AaRPRFFc2dTUtGHlypV5AP0YpPVCsOXjxTaF48av7W8AeUBFRcWN3B4D5Fd"
				. "R/xFI8qeQ5F1td9WnjtoEYKjheEjU+QDqQtzcbEhmgmxvmQtE/QBZ+14cyvL2XgY+l5lMJgKwRZD8LwD8QpTmkwJe0vICjytjYuL"
				. "6oA0XQVschQZ4HPX+jnpvwiHb0gqXe1pRqwIMMMdAZm+ECr0Q4FjVuXqRiz7Qnhq+gLcD2Fdil/8q8UN4JRo0pXi5QXDcNgLYSZD"
				. "4PHjVd3bs0HH+bVkT37lmX+0ewWEwM4PD7GQGp9HhaGgyinXOpsaiISd//k5ZxAHmKjgnJ+dyxoR78evvTtcBR4e0oIcFeGwQnh2"
				. "sJGz7b69xh96rSklqLG2Mf7eL4ZL8GBN1ruFljHIPjNEoj2wYTbSzfQ4PrQpEEg+BzUHw3yOSc5fY0LRzYPHaQwEbd5pQRAGGxF4"
				. "IJ4bP0eobrGwbAO7Ds0Eg47tdDT2uPSBSt2qRZh5qoje7m2j6YQe1r9PtCzHj1wk6oBO2I3hzGHcTTEbalTb2GM64zkniStZAX/Q"
				. "vyT0YsHGniCIC8OjRo3sh1OEzLHO8qZEFJxI8OdVDTN/qZqSb9zmoQ60M8lvdDHTNAQelhDSLzEMdeFepgB9/DAD4d5D0j1mTuKB"
				. "fUe63YXFqRWoRwPylMajjO00m8xzcTPfQYKuB48s3PJ5uvnUQwje6C3TnXgcl1zG65IhIb3U30K17nRSr2xMegJinDWdC0h8Wjex"
				. "hgL0LqXOpwfk+JPuUTk5oNsBQx6kA9z1c4ThtXmuCEymeVUZGb3c10O0/OqlnlUg5+UT/Bui37XOSKZz3HEXNOWTA+yH1FTILT+1"
				. "My/l3Y33jS4NK15ySl9ybBTDs7BCo4/+S1CnhfkkwMEUSnEjxPBrFaFG6QBcfFWloMdHBaKKPOgp01aEwxiaYpqwCcJGJ0VDht1s"
				. "s5lt3pubMczLx8YH5uftCZ95yChtggHsRwJ1H3tkadKqlsSU8v05mdHa5SL0RZHFV/UJvOW3kyRBB1pdgbZ5BYHQ1wJ4JoOc66sS"
				. "HM8v1B1MiTWEBnJ097gZBYK/jRqpizdNBGlvCcwH85Pu/g8sM1XwdFOnzALkHAO9YG+QETKddSsB9wTYC6FsEG5uxK3Xsw3tP5r4"
				. "6PcRXbptLIQOckzPuJkEg/qKY7206TaSxuTyLLEQrU4nGww5zT3rKCZHe70p07w+4QYEEWdQ5r54EKx8EOS0e5V7unZJ95fakUX8"
				. "YWLy61bpNQwIYankGbsarJE+VCVr+9AA8OF8lzxXJRCMLGdkgT+cVEm1JEGk5QJ90IgCPECVYlOJnpkpzlRtiNJm+yUsb++Anhbn"
				. "PP9IKy1gEBXgMSBAMb5Nr6SOmdSokammM2xo89fj651mDO7EmWaSJ+TIUlx5h9GJvkYbB+Ur0N1VAK8FawEU1qJI7KjJPOdexBc7"
				. "YsxenZI/fYR91xYDy1Sf9NrIZFBDg884b28NsNiwguUdHbqTujT39OjWaw3NNMlfTjAwo1qUasU6pSIvTiK4+5GcwhIkqDkpJVeV"
				. "pgXaXU0vzOMFm2rozZcwl/QtXbvZ/peGRX4Czs7OtZrPAF1ZJCsRAP+b9eQJebmK0JZFLrVyYq+c5Z4qwyYza6UlxaB60FkjdY54"
				. "iiKyTKBhW56VlX52Rn/uxv2sLh/wCjFDor2hBZij2UUu+N/f0A1yfr0iL2os0uNgoOVfptYx6VjlpVYoIlS3oMAjLg/YLrKy2PXk"
				. "2kQkf7UrJua9f4YrnAl5UCKQLMKR3EM4ovWISLjh6FGnAZR4+pcLiqd8uohJ41JuSnDSiSAZ0JCziB52ddMlRQVLdagbBJVirqt3"
				. "HOsB6ywJheDx/25U2Nr5f/vKHgl5IAPIBmPcvjx49hi8SKsW6LQVHjyLBszU99RWQ2PNOyuX7lxrona5O+iFWpLPLNVIcigRrgda"
				. "RZlWe26cRpXHsB+Fh2zLyl98TtPF+yAfg0aNHz8TmHH8Vfg2AH7OJdCRKpM41jKwIXHpXMNodJ1JGuaZgKDY4gP3VA13pgEn7jN0"
				. "NSa5triSrAB48eLApNjbu0XAY/FIB35johCctd9j1rRBoPdR20Gb4Ucty2SDAkldlq/YlkCHJqWOLMwqWv0hhkgrgmJiYGThrD/9"
				. "XEJx+KYDvihfp8iNyoTMqGX3cUaRGgUndmXpMPdrVfUDkY2/DAlax73oontuZNvZQ//zlYa0LqlXRdypvxOkCTmvwDAZ4PnRzsUl"
				. "EeMSoE1Q1v+VHbU7qUSUoTqGopLpx7rSwvOdgIAsCE9/bnjTq3HC6Nj0Ajxo1KksQDAMD34S2ACd8vpHgqQf4PjhWycUCWZyMkgB"
				. "0ITzsnlUuPqLnn7eCllkgoP06Wb4ge1iJLNpoMn2yLmHk4KxS9YsA/sgDMGOGq4MVbhtwpNRTzpPzOGoVPTgkAuBis/fYrwQr0xV"
				. "pemra374fFS2zElmPWIv5TexeFOQ2SCQB3Lt3b0t6evqlvxRwgvGU+QbnWWIRPV2PsY2Magzk7YoU1d2Ubgl2p8s2WVbt0qkU0hw"
				. "OyJ6WKYEnuhCe9c3wrF8Pdu0SwO3btx+FTcKpupFtzVOPrx7PaoNXYi0OPpdLKcGac3qkVSu9imOlylbEu1qQpWr60utJw/a5bWl"
				. "jl2XmB34Nxyifm03SyzxdHKJTxVPU8BKkffmY+XjQwYBlXqln7mQ1iL6S6vLB9SU6ysSc/xQEYVyg95+Nrrb4TJzzd9GaFH98/dL"
				. "PiWdUE/NIbAOkN66RKXwjL0/mz/76AIv69iiy338FVby2kBoPF/hIqgpkhWrXk2gk5GxLGXMVdt71dx3GzMzM+Lg4e9CJ6u42K+l"
				. "0BicSPNPqBI9klkMUulcxX0klBdha+6sA1m2LxfIaso7oR7E3X0DlT8+n0qfmeVukVMd+pFfKU4BtYPTk6rTsT0bl6y+mboyOtg8"
				. "mIp2hkuB0OoMTCZ69KgWPxJ60OKldvVHfBrtO4Aaa6app737JLS9Q6tcvk332TKqav1yS5IDSGwBsUHoCCfzFuwf1rsEoCM4MUer"
				. "YDv/Gael0AkdJWcVGGlpipOR6RhVGkT5Lb6Tdcd65bno8rcjOqDBKN5c7WyUIkTrBjfa1tYo26ADtsc+K/cZd+6n4ijmUNO9Biv/"
				. "TFVQ063mN6iW/YGvzXNs7dsWNeLlfxdpC7bVD8bAz5LapL/KXAvgt+y10XrHJI3n8BvesNtJNA6uoSfDPc0yhGZ6zzOvHGIfURSk"
				. "B7LnZOuGSQkpFVxk9kDk5DslYRM/IkQDWguYPbG2ei2IoysKl+C5thhHn7KGH5S8B8I61ggfcV7vX0/RjZthVRjFwnmIAXpmg73z"
				. "a4ExdfMzikdbv7A7qU2Egk+gfVI+NxWHUlTlwpqKpZt4KcpZX+4DM65j6dfe22V1vynAS4qOpcv6yYIDqSDHdtDl+2BODyzYWK8s"
				. "Zca7U0G7kqQBcSm02z4R62evlN5Y/yU/2rqErjljpYJSTykx+Iwu64YCVEhq8bsn3MU00oCyw/VVKb937uZRc9T+Kefp6KjrrD9R"
				. "0uNAHZMsIeVmRklkvUszMsRQ760Iynd1NSouZMZaOT52tuANqG+wH9CizJYav4TlHmcivO6U5WLUN4FKqplTo5zlic5KsJvnMDBP"
				. "ltmuk53rpLYrn5XkJJHd0kVmVe9zqpAsk++tuqE8jVUDze1M+8UGKfvYGard7LhV2nKmSZE7GLinSNvHVO31aY83KoPRFT9PJW5+"
				. "nhiP5PjZYt/Uif7FVnLVNGPx0pnNzozsPNliMEbUD16R+SEOhtgBc5hs64KVwjFa2a6Cck2Y6q9JE005Y6LP28juiXE0PKzHR8pQ"
				. "GD8/zkX/lIZuKB8+phLRziWbaQQN3AXe86+mWlMs5uZ3N6EoxD8ygitlvUNzTfyDzyAwynt016LVzkHk41fBBvvpK1c6VWpoZtTe"
				. "k2M/HnmdIkXd0mPSkJLSJb/5J78PTp8KOv9WljpIATmaZia4+bKXxcJ74G6Id6gzkRN3c5Abicj4UYF9/IMrncVH2Hnkl2GV33eO"
				. "9nj4NdbwrlstLfEXNmirZXNMI1bpvEtXMz4V0V1HMLdNU6Y3fHqD6tbv8dHD4Jyav3KsC2OBbzJeRVspPX7WuTmgQGD15Ro0kvTO"
				. "OWim9Vr5cCTCnQMOLzbQ+qYFm7Y+SuyI1/HjpKDwRVVK/tEaCfY7JA7Jj5wFqXPMtWa4YI2VxcKuf/JDqv84jQ+cUsr9+BzWs/Zb"
				. "qPt9AifP/rDpn9Qcr6CQ861AAla9FZaPHb7Nnt3O/3MYB5kYpNjgb9cl+ToDzpi5Mr6Nt8Y10K4DsXWWUwOJnu+OnKEm6Exq8wGs"
				. "pDd74MdjzIe4R2IDTcMgryRo+9Ys2UkPeAWmfA+yA86UEl8fG9Xn7qfGI71ptzPNf9FHTGhttNFjYxeT6ZC93sqrQnhAA1tLPD/D"
				. "DNgfdf1YlXXDCSlcdtuHieYeGQOMKLZ77w3T8kZ54IPbAk1aN50rM/Q33SY2npp0HVHwEe4yEi7Gf7C3bZmZ78qpe+4xqFm+U2+D"
				. "+p1XPQZwtDzHGx4plgOEKFIui0F6dHwITHzo9Aef9yXz6jZv43qft62i7vZFuPBBN/SrkrwVw8KqMfAkH33MMKDfRP3pUSzZb0Jk"
				. "Gqz/cR+TYdVDFJ+q2aVIvVsyfZ6jSS2c+IYHrxrSlhNs0Ct50FLxp/soVHQHbs5UFIgFOcwCPdhD1rTJQxzpGyXCMrE7ZJvKFU0p"
				. "MTiqEV/wTYthjLsBCAZyPAp0LB2p9YqMq/WCUgx44q4LsjVBfTYLEn09s/2BzErZqvoNLLNTQq4q22ZtocJnr8xFKNR1gsL76plc"
				. "o+p//J+2bpwyh5GPzPXzr4GCV3vyi/BpaC4BVqW95axOSY0ZhZykH+JBvlchLYyCecZCa6YVGGl5mlG6y5AC5bKR3KzsTfItngLb"
				. "FNdH6hCbKi/OumqIHOO9DTsTDch5i2691XjAqRwhUbvL2S++EZJ9Tpo6Dox2MRqD+4va1sMOuvADTaqRs1yXXv7eSnGXVFPvRnzx"
				. "5TXkHyYjwqfrvCwPesUB216/6dm0RFZ9HLoB3BzwLuVqqPIog4J0grX88bCZ7k7vXKTC4fMvHCUZDKseUmOm4xUmfpNXTWkioP5W"
				. "+JLWenv02jszgtyI58FpJ/0uvpUGlFp/06Uej6ZaBJXQwuom6Vhv9TYrTBbth0SYqn/gQNUE9U3w0WaYOlXq53J0w0g10jzgptqJ"
				. "SKMMkXLu0Kj4HeGf41SMDOBe+OwFunI7dC3Z6N+A8nr0d8ev4kw76R9caKrB47a0bcC6fr3atpud226VB+0/hUfujzQkNtC6pnkY"
				. "Uq0HuAVCH4IF6p3M1Pfq9PaD0uokp9poQMvHiPDa2TB0mpRoRGzfmtdriO4M+FgSDsaysbLvdnsANlGRcWsPe+uN7caEJ0hgBr4K"
				pBitmap.="47TbSM9/F0jM9q2m3zmJX++AFf55aR9cfiqaUeoHmdqkmfmo9tf7sGRVkA4haSb7hYIwkxdxBGwjHS9Vj6a+/WCOB1iuzPR0eVkh"
				. "y7bzlEbh6XYrq2i6rpzEvL69qxIjz+HrLkkhHotsylJ4x+Eo0pEKnj6UFxG3lgz/G0EO9K2lftO/aJu92roGTZKZpJ6KoY62Rnux"
				. "VQdVGX7VeC0fggbPKUM5GM45EUztXjNyt2kRTkfZyj0r65/ZEqHzyF4v6JUOXkMZ2IkJGwZThmhctrkDrXF8yiXy3pV7PWNdaQ+A"
				. "FTppJZnje9+yLoTvgIddrTlAPj/pvPSvp+bx4yZF6MS+BHulbTset3ofBrdb5//+1r6HP4FidXWGmCQVWGl9go+sPxNLGxGJ6o2s"
				. "VzToQE3b7qp/4gMyQXO5ktTqJYi8JYIfD8YnBYPTzOdjW6ba0h7tkYBiUAq95WoGF/qOxtbyde6Gq34J6vuFQDHWCFL+yM4Ge6VV"
				. "JmxL1nS8nrn9XXL30W5tUR498H0+z98bRPRmltDuuUbLV5+dbKSoMU8NBtn94f+tLMxO6SgBv2LBhJ9Q0//hy79BqttzJavQz2B4"
				. "pmnjSSgsgfcqmudv5MdLPrDBRVomVYhwC/QWgfdCxGg5UVcCOhg14CJ7pVU73/xhP4yDRS1Nr6Sc8MAvhed8OrTHEHSMHofrPN1H"
				. "V7H+To9zneyORJUZdPK+uQDO9g81f26pToyDAgHskKLFRoI7wsI/YlLbY28v0TM8K+ttuA50Bu8qbdwXCoD6VJnqydzniYv+rGeW"
				. "m1NExWzGdsMoqiKv0UqOD/oJ6s/fF0XnFZt01g7RU/Y/PItJrFYjAPtkDcF1dzRtWq+1hgKNamb21AD9qEaURmtgIedF61N4HYJl"
				. "e/jaB3oXE3n9mKf31+wQAK3deDCqz0L+2J8H5Kqft8Q1+r31PbKNPGr/El7pXUkZ5QsQigwhQkgfgrVu3nszKGvEBmnqtskRr9WL"
				. "xlI1xDhpX2npfFTD7EaXcdvX0lz3xNL9DNd0DkC+BVz39eDTZGw2Sx/zs7kSa17EKXncVKbEKdu3c+/4KEj79hC1wwbYju+ruNjU"
				. "1zjEaTfz7Bwpj0nq9WMsQfmcD4NaCuMIg+kyZ4vS/tBpIq5muPBojqeine5bTp/CYLwTQVxyNlRymq5A3qNxCc84ohTqWtUAoIeQ"
				. "OxMinEcAW1b3dtGnT/qysrDfR7Jv814kc4PwF62WJjTSp2By8cJjkgKHdH8VVqSvsUbSTp8yBGn4GztWQUgvN3ZlEb0BaP4REL0u"
				. "ppT/us9OwUiv1hU2eu6Mdvdy9ApJZS6GEkKVhLTbd6mT2EZ66urqHLBbbdHItgBYcsJYB/llSI2VWGimtoVkvV3ioCYCaFOf+BB5"
				. "upSoOVreTvwo6u08ZPbY3nvohzp0NUGdCahdBup+DRF972EGTC6LJBi/7PuRllVjohR4VVKYC0BfweDh3orx7OpDoAzC3xcOHj7g"
				. "PwEhf2A6/kyO8bst64Ppaej09eMgqDQaERYxcnfLy8oPfwvnJQ9iy2d4gDQcGayfvxbq/TwnddjCOJhdGUSc4ZbceiJN+NVy9M2+"
				. "nx7klVmnWxx8zism/DyVSZrnJtScPREj9zySqtm1Idbrmb9Om9W8NGzbsciIh6HL94QKup9YOW500t309zTpu8745IJKrL5d5gPQ"
				. "ZdfG+SCLRWVUmOhtqNRMxbm5SPa1NaJAcn0AEgaMXoIJ3xTbQrQA61iFrEj7j1l3TDTTv/ZwDr/t7lF2PmHhftLq3pgvUwpQCzee"
				. "hdO+IG2jR/wMQmQehXhdg/r5pZmbWtVaryBf7SPTm+J615YDLUv5NrINi4IFeI90gX/DCoT5wnPjvhiMibYLTsxpg7IBUB4peViT"
				. "zOVsN9PsjMTShMMq1tK5Xgjl1hDx0qBdpIB6gGceiqcDioM3x9XQUoRhXzZMLrdJ6HiJTS2+45JF+IgUv361EgW9SuV8Hdtu2dcf"
				. "OPfdcSDFbQp61PPQaqz5D8/qt5Uq58Kq5mp5Z6Dse65cUalop3fzx4Dd7FJyo0bCf5UYnrQHQq/DbC8nTaxd3kLg0fwBna2qBDb9"
				. "osjp8hwLdR7xLdHKh7DH73HhleY2URso+yw+B/wcAf4UBI5T169cvA8h3oUUvBz6NkloG+BeJDZIHfFW+Tc2JuQYCgqhp1bkVqt3"
				. "eJNA0gMF/hxH2LIXErkiqk2yttl35kMy58Ko3QTqf/T7R5wpFjWRrwdXaXp92uf63FvBeYoEB5gSQXxk27NxujLE/hiONipOoc0M"
				. "AnMfHvJfrRthkyWVx3aVgp1cC6pZiuUXuNJlHZzhTNx+OoWugZt9Nr6LP4HHref/cxuqpWa1t1gNXXT40EEVVWe+D03zgxSMh9TF"
				. "8883Gu4cMGQZbzK5Rprcm4BvimqjIWEN3HLNRQqPvuLEXNHnLNAOySrBV89Rd95jfPBvUb5dao4ejul2MLsiP8qhAVZ6OBLuP3eD"
				. "6A1VPeoNRIDUcmNiPIQHMnS5BEK4fOnQYf5/4Cs+JW2BvFbXUuYrsvXBe/tytmm47FkVnVhtV3rTuGysKW+wrvXIav6G1qLysXR1"
				. "9nVBHP8T4jltGNzG6/EQ0TYcNDiTB0n4wcN15Cs/Z9440P4wK5IjBBdkXci8hQHYA5KuHDh1ahDt2h5waOQdLUUt1VAZV/ddO1XR"
				. "RkYUuLrJ637PR2mSFLdZKr0raQVYUmABePO49aGuSpszyGbp8+mz3GiO8ZLPsDSsAUrR2P877NGNiHdhFgXFnnHg4WPIJEyYtSLp"
				. "SHARMPbCaNfGuvv7bsLqBnfJXQe4cPnz4jwIJLzl1vtWraqiOBmlO3Mxv/n+T62kbpO2WEzbJhmqdKzeIHlWteACUILv3ubc+oNI"
				. "sgenbcrdkKrSAl7qDzZ9FB92Y0PDpl+7EY8KUjlar+Z9gO9nzYGikmHRADVV6/anpAMCf5J/AbVY//4YNG/5xd8bI0h8tjnknTZr"
				. "nW0WRjZsPQNoe6FZF009aaRok2qCywa7SHFtRfjNINrk6kqxsiOfY/7l1sjqLRrakxHbx3Ym1n0hL/HZwLj66Wsi+oK8tbj44Xqo"
				. "CV9Gp4dpzg9qA7Vq0JQ8NrEKb2yNxlCiIPQLY2CKk8hV1OpBbY5COXWYkfd282QM5cbvXfvhA+zGvfprQYP86xuHn6Ys84LzP+cO"
				. "Usvr7eAAAEABJREFUWloX10A3nYiiM6BS9ewsc9ljPWA9ZYi8c6kDnFjvNoMnfxnx+SLrBcfb1S3kHy+hUc7cJoA8s29UbBPqSO+"
				. "neOyuGtxdolN80VFd82kXp/rrpDCD7MfYCdOYQfpOVboCvD0iNV3X++Ty9bwcfzXFkpgwFTbrCRz2UPIQ5ctcy/ebDTD/iNOO9jl"
				. "rZpSYpw6rctJ/ENoctAYbSYkc4EcQyz7UtZLGlJlpZoGN7A6Dx/ZqQXYzdqd7T8K8TdCzJ/oqWk5zR26C8DRAWeBebY6D/LEgXHV"
				. "e9NQKJNzkBld2tJwnwOveTpVL5/tbnc6VvvDHmLFbyGJaheb3xHFFI9WNI7J0/i5xwoAzS77cwd87QvpHm+PHLbdaRQ76GZr2reD"
				. "blg3Fis6lxISp3RoEml1goW1RDloc10jHXCPtzem2DMdx4zc5N6GBNuKc1+TbKLvMqgsyaYHVqmm/jfWror2gM+p6wjq1K/YOuPN"
				. "c3yO8+UT01NWwI1zCOgDct5xVjgc6OpeWhDKg2Ktq+bG9SeMuITJswZk+NjLLpyL/1AIQ+z5l3NdikWPymc7cqsFly4rzUsf+Ade"
				. "3WmGXy/bnr9ySSS0EuF5gS5Wdipk1Bum3G9K1KrYJW9k7dVNrxc28N+q1DjW0PbaRbj0W43ppTQsyqaRZ2SCVqtY5t25/MlO01El"
				. "8JvsBbZH21Ys+gHR/uJcmmXs6F6umbR6KnzyciewypyDGik7acLiybh6kXzUN9IziZbt+TJr4Bs51HQ4t7rbgyvo6kiieZFtMGQX"
				. "L1+xKG3scu+lyGVri/uhliwAeejz34I70nK2k+YjHWfBy+a9SEGlztIO+gWQftDhbPW7eAIALulbQQ4di5VEhBZCy76GQZlVlpmc"
				. "tKJAEy+mufKM4AJvP9cq4VK4H3MeA+LWxk59ljN0lyiMaUIJ0fed468M/2idd2at86dfqczheF5lwi8sWH8Xmr41NTR9ovyyOtmx"
				. "GmQukS3HSJ+70Fs+Wger5CIZI9ystsZCk7Eqj9CswOml1rIPWRzdJn1iX6rYC4PuhPR7pUkmPuUDWOllMAaov0FoKIMFESsdyNGm"
				. "WL/JH18VOfgpA3YG6bwD8LxBPH20iShGYcJdgpC/3JY7P6lny1XZ3eS7Fe5In8JVY0kh0TO97csUm/aaKja72VjsLK5a6k1sMsKN"
				. "B/NBopidJd60PL6U2CXRZqUDTyoy0BvHsV3FN0mugSooU4Hww4alOVfTooRgykeZp8gFaobr98PYHvyJn9LGYKR07VC0+Gqilh+M"
				. "mZpNguMchOi/tVrb0v8q874SML80JHbYSMzyLw7Gas+zGQ5H6n6KVmx/x1xKRncEvFQ/jApcDJlGLAR5UtOrI9vScL3CLpoRSnvc"
				. "ija8w0WhI9QqAvBQOkne2TuR6xvZENdKbaTV044lodWWdsIj5kWDvYg1BJRghufAoySvc6BIPfw7GTXoOnBZ0K1eDy+lMZ17D3qS"
				. "J8yDRj28UsmzDnOs8n6d2MpF/TZFNShrK35Wp0NbdkTq6Fx6cDKlNTnkmjpsiMqGRiY5/4ckLCWC5Akk9SZPLTTSsykjzExsoT5p"
				. "iE56DJZUIAPqyhHrKrDLRoEozubs+dNWyHyYsRBss7TO6/oj9/C2dyj/XXWZ/X8z4MbzzDHX+pJcvN0M8hP/GmJioOBx6AGau71R"
				. "Hsxi+/J1qSR4eDwupcXNdb9PuHlS4ap3SS48IwAsL1nw+LW3MXqaJxYIRb3Sig9H/FVppJRykBQBa/apwy+PmNyDFGdUmeb6XP1B"
				. "bboPdpV89Gjelf0WV889nIhxS5hkMhms4lzqxcYufk/GzdMZm39kVy1TL7ACwbi4v8f681HFJ8NwWiAYywsU525Aad6Pove/Pa+P"
				. "riAAsdXqkZb9AAnst5EpyP6Jnf0ylibpAV7+SUi8t36tP4QNebHLSFwl1NLXE6j8sarYN9pFivi7zzTFxwpWH7ZM/7ly+5FpFu7J"
				. "ERBUfla8o1bOje2ImpDMruxX2+f+U6Tvso5LNFks/uaNEktObRIM8rdk1HLKVf78BR9kF+UfnaflGbM55eSG9bU+T1EfHkCt5hEp"
				. "Wnz3qDTQ730rPpNZRJV94rBkDEz4lUGRhYh1NKLMovlrmDYv8x8CBgfW0X1Xe0/ccg8b//tuEkXed7fq+EcC189xLo0fzRSrzlWx"
				. "2JmbHWy3m25ucTb8/s2R5rjLPbDbfAgfLIIdJzhW4K/y7woWwy92wvQxtGIKGbN2Xv3KwO/ZVUsQA5kH69vY5cwBK0E+9qMgNsms"
				. "GZftGge4otNDTaXWkfQOouT1jfBHw9bENNKrC1S2jAtRfDBwaaSRY1ZIop+1MbNa5jvdh085kNl+K7StKHq6Y1sc2f5eYPUA0GWb"
				. "L4NLsjPwVz2iKPLejffYNuDGP2NP689mKPq8rRvStEbGg4k1Ki7srXFss1eX/XCB3bTDQ70rM9H6SelWclnjVX8c10Eg3wKpxxqB"
				. "yGpi7BlRvusgN70RyAQyJexdFh0FTPbUvYeIPPUu/WBaI7+6U8YPJZFgILlF4iD7NyF+uBVeiASdy39iQPuKzcce3676LGlGA+TK"
				. "229Kz78ZFLAqrosIeu+dCj4b3ux7x8n6LQ1PQS+EA/h3CplqD09WNqew/DaulPuQDqipdvG61kP0E127HSuvnpsdbLiNBHE0GWro"
				. "3acKLTofzyT5ly1QLeG+OH5cUZWL3oNxd4MEHq6saqfHWQG0Yftx3KX83Rfy9r8zjuZ/vSM/hPSm632LyS+6hXfKCfEGZiV5I9X2"
				. "/V1VJmRsAcD4neq+1iTJqTKReDrhlCPubUutKT++QYH4c23v5KNO2pPEXxhL7D+zoeFGgu5kg3PZD8oSVkNAdaAa/0L7RZjYJdW1"
				. "uPpD8lzLzV59obvsiBvA55wyZvnXrN9wBoHoSZ1lElkfc2QiHNCD3rTNSQiOjEqM/hys8wA9ygGtNGhPcQhWtPdZMyMMJ7tmbNLG"
				. "8T+lXTyDYKBcEYeLupLHXCsTmoEx7lOdqfKKyvuIhcdQ5nOH5NBqKCMBdunSxpaSkvdG/f/8VO3fuLHUNQnCP+qWwmSlA5jefD1p"
				. "8DVUdWidHYMCPm5zkM3W1lSRY9rA9R4//kDh+2p7kCa/uso9ds7t4+Tsx1Gte58TOtzLG7oMXfwh8loqM8QW0Jrjr4pp3DTmZG7D"
				. "7MxhFBOCkpDS+1qXdZLLcju1jPC0zf+Ur29LG8N6t8WEzVIDcodH/W4fBbbC6QKnR6etnt5IEK/NcaYPx/y2jkdFZ7cZ68vFbf7j"
				. "4cPZE55563p25I2XM+/BhZkp5gjPk7wT7o8h0VTIxXYaD3ZmRkfFKXl5eCe9R2ZKWfY1BYDuRkxI+UxnAGGfoEhYM8FrB6TvPqbU"
				. "kmPTUtSaN8eFE8VEOLj/k92xnSs5qEggAi8twPS1eSCwiAAuCKPXo44bGW602PhrCF2KkQfm5+VvTs39nILasWefCDWhkrue8Ge6"
				. "uFnAn6UTKLZRgIn0A/aVrpBqelViuag4Hl+c5nXNFQbiDS3Wgj08Go4gA7HBQk+DVpNcOHjz4882bN0vfDTjneO6q7e3H3MeY8Hx"
				. "zeBe5lmGIxDeWTE7tirC+r7KGTWpbGxRsLdBMEK/B5ht3OTSRh5gvVDc41kTbhHlbUsfwyXveNYjDpIgAjJtUpDhkosjey8wckr1"
				. "t2zdSwweeWPnCjvTsM5B1c7i8f7K418dQpzcH8AQHIx+F2sI42MVF1Qw9wP1JMCrcsisle0O/wtz3+dGAEyue+1jIMPdMTXkPhya"
				. "B0evQgse5oDSnbREKk5oOqNZtIYqGRH8FkC8FyFKPzb78Vbf1TB3TATdgaqhc+ZfJ9pr139RvDuC8G1RtM5mOzg6fwrLDigfAlcZ"
				. "EA3tvZ/vsKxwiWwQVHdszLeX3SO/jqhELE7f4m+Ts3s3xqCMCMEKjg5mZg3ineoIi2Q6QlyI+fq6gQHzsqNNZs1rIvsyeyhbjIrP"
				. "98VLSwrj6gC9tKykUwLvXG1pfgsmPHfYFVgM+m4j75YmHFdQkOh1XDTm5qlnhUkQA5k7AoEGDVqGRF2nuGH/54L60NDYD+XMqe1W"
				. "+86/yDhfYGUAmGhmI55qoRlob7R5uaLmDxafH92jQSHCEFswIRYKV6XpS7Yea4F5dk5m/6hO/JYJQxHqy4Gh9hCfwIj/fH+wEX/u"
				. "fsbH2x+6OrXqrQ634x8dK4/g8Lp8YuQpqeWFsPa3k4Lp1mD7PsNrXu07+uKTaXkZAP1OIEkxhAcupHoIzIzN/5acBSwWhyI0Hl5c"
				. "sTEhIKobkJCnT5VjUc0lp+N1/zMbu/4Otcu+AOuNPveoNPbj1rsLFHzI7abelCaGRmrd+fBuekzWs2hTxGNjLJjwJDuHZLMdFTwe"
				. "4LV4tPGIA79+/v+6ccwbzCV/3KdP1uxgla3TGdmsj8V+40uiPpybFsxeN2GNQndb+UptIsCo/tMs8hNj4/HNO5H7b4oZRxEeTnC9"
				. "BFfPuyoBrCUUi5AmHZ06VSfoIVltJsJSmakyojGhFLaufGWj4L1yKKMBbt249DinmPVkPhVOvNQG3ww0fX2VWTA9Ssm0dCW5Gc51"
				. "o21M/Fax8WG/aTUso4uPBRUWFTyYlJfNlHqRPXDfna2WRBPzKcitZ3JIaxLY3m1qmCA6KDsc1AwtWrRkYoeYoKeIAHzp0qHbgwIE"
				. "zGTPwd2xMkfg8XXMBHwnHaqD+Yn6BqrUV8bX0/tXQWDt7yMkNPpPZI0WtspLv9u3bN2VmDuLO1gvavLYCnL/SOqM8jAXV2pD4DA5"
				. "cxKyBJ1ZuaO1ztdpq3Nu2bXlx4MBzOvP1tQKVaw3A02B3by+JItMpFlEdOuok8aFF+avefURe76TVqfWWWyfehbn97gEDMvk6Rfe"
				. "GWqelgHdsFOgugBsbxjhyG9AR/P5Wl183l79zlNmGJ25VgF3jmPdlZmZ+h/Dp79iPDpdHOJ+KPwf29roym/SC22lCWyGxf9+ff3L"
				. "+dGee75cx24BaFWA3bdu27e2MjIy1RqP5HYBzbkv5aUGPFgX6XYWFRtRGfuX4ZhAfdFkgis633Ta2LSVWS20CMKe8vLx9giCM7Nd"
				. "vwHUQwEcgh3wZoGbZXAXxJQ/ePL/S/HZWrXkMoJ8KjnziWptdl4tOwnFajOduYWHBsaXuKTinA7XpjXDKQfzc7t27v2e322dCbV8"
				. "JaTxP2Y4QAeef7HzX4Wh8fefOne438Tbj98zGhKxEs82cw0RhBLxraAvWnzSD1RGgfLjCm6FK1iDYWbWvaNX2SHdQRIra+kmXiPd"
				. "bY/Mm//Xt27ed1WodCyAANDsLgHeBJLQDztxeiwCcv4Z5FLvfI/8bPCaroPJ3+OM9rHQdL7/A9SM+O6JHamIfkYwZALwXE1knONf"
				. "8Bbl2rh9/F5d3rXL9zqdd1iG/DkaghEmLjom82/AgI3YAfu+eRla7Y+iJ9arXOwe0wj2KFP0/EGyZ6QvxPs4AAAAASUVORK5CYII"
				pBitmap:=Gdip_BitmapFromBase64(pBitmap)
			}
			PW:=Gdip_GetImageWidth(pBitmap), PH:=Gdip_GetImageHeight(pBitmap)
			hbm:=CreateDIBSection(PW*LogoSize//100, PH*LogoSize//100), hdc:=CreateCompatibleDC()
			obm:=SelectObject(hdc, hbm), G:=Gdip_GraphicsFromHDC(hdc), Gdip_SetInterpolationMode(G, 7)
			Gdip_DrawImage(G, pBitmap, 0, 0, PW*LogoSize//100, PH*LogoSize//100, 0, 0, PW, PH)
			UpdateLayeredWindow(Hwnd, hdc, Min(A_ScreenWidth-(PW*LogoSize//100),Yzimeini["Hidden","X"]?Yzimeini["Hidden","X"]:A_ScreenWidth-A_ScreenWidth//5-(PW*LogoSize//200)), Min(A_ScreenHeight-100,Yzimeini["Hidden","Y"]?Yzimeini["Hidden","Y"]:A_ScreenHeight-TrayWnd_Height-(PH*LogoSize//100)), PW*LogoSize//100, PH*LogoSize//100)
			SelectObject(hdc, obm), DeleteObject(hbm), DeleteDC(hdc), Gdip_DeleteGraphics(G), Gdip_DisposeImage(pBitmap)
		}
	}
	Gui, % "2:" (fg?"Show":"Hide"), NA
	If (fg)
		WinSet, AlwaysOnTop, On, ahk_id%Hwnd%
	If (Different&&state){
		WinGet, exe, ProcessName, A
		AppIMEtable[exe]:=fg
	}
}